﻿// $Id: ActivityData.cs 10 2008-02-29 15:58:02Z mcartoixa $
/*
 *  Copyright (C) 2007 Noury Solutions
 *
 *  This library is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU Lesser General Public
 *  License as published by the Free Software Foundation; either
 *  version 3 of the License, or (at your option) any later version.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Lesser General Public License for more details.
 *
 *  You should have received a copy of the GNU Lesser General Public
 *  License along with this library. If not, see <http://www.gnu.org/licenses/>.
 *
 */
/*! \file
 * \brief Definition of \c Salamanca.DataActivities.IActivityData.
 *
 * \author $Author: mcartoixa $
 * \date $Date: 2008-02-29 16:58:02 +0100 (ven., 29 févr. 2008) $
 * \version $Revision: 10 $
 */

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;
using System.Text;
using System.Threading;

namespace Salamanca.DataActivities
{



    ///////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Interface implemented by an activity data container.</summary>
    ///
    ///////////////////////////////////////////////////////////////////////////

    public interface IActivityData:
        IBackupable
    {
    };



    ///////////////////////////////////////////////////////////////////////////
    ///
    /// <summary>Base implementation of an activity data container.</summary>
    ///
    ///////////////////////////////////////////////////////////////////////////

    public abstract class ActivityData:
        IActivityData
    {

        /// <summary>Initializes a new <see cref="ActivityData" /> instance.</summary>
        public ActivityData()
        {
        }

        #region IBackupable
        /// <summary>Creates a backup of the current activity data.</summary>
        protected abstract object CreateBackup();

        /// <summary>Restores a backup of the current activity data.</summary>
        protected abstract void RestoreBackup(object backup);

        /// <summary>Creates a backup of the current activity data.</summary>
        object IBackupable.CreateBackup()
        {
            return CreateBackup();
        }

        /// <summary>Restores a backup of the current activity data.</summary>
        void IBackupable.RestoreBackup(object backup)
        {
            RestoreBackup(backup);
        }
        #endregion
    }

}
